﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Security.Principal;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using App_Negocio;

public partial class InsumosPedidos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         if (!IsPostBack)
        {
            IPrincipal p = HttpContext.Current.User;
            if (!p.IsInRole("Empleado"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta página";

                if (Session["Identificador"] != null)
                {
                    Session["IrAPagina"] = "Principal_Clientes.aspx";
                    Response.Redirect("Bienvenida.aspx");
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }
            else
            {
                this.actualizarGrilla();
            }
         }
        

    }

    protected void gvInsumosPedidos_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        List<InsumosPedidosGUI> lista = (List<InsumosPedidosGUI>) Session["dvInsumo"];
        InsumosPedidosGUI ipg = lista.ElementAt<InsumosPedidosGUI>(e.NewSelectedIndex);
        Session["Seleccionado"] = ipg;
        txtInsumo.Text = ipg.Insumo;
        lblUnidad.Text = ipg.Unidad;
        txtPrecio.Text = ""+ipg.Precio;
        txtCantidad.Text = "" + ipg.Pedido;
        lblpMaximo.Text = "" + ipg.Maximo;

    }

    private void actualizarGrilla()
    {
        
        App_Negocio.Pedido_Detalle pDet = new App_Negocio.Pedido_Detalle();

        List<InsumosPedidosGUI> lista = listarInsumosLista();

        Session["dvInsumo"] = lista;
        gvInsumosPedidos.DataSource = lista;
        gvInsumosPedidos.DataBind();

    }

    private List<InsumosPedidosGUI> listarInsumosLista()
    {
        List<InsumosPedidosGUI> lista = new List<InsumosPedidosGUI>();
        DataTable dataTable = App_Negocio.Pedido_Detalle.listarPedidoDetalle();
        App_Negocio.Pedido_Detalle pDet = new App_Negocio.Pedido_Detalle();
        InsumosPedidosGUI gui = null;
        foreach (DataRow dr in dataTable.Rows)
        {
            pDet = new App_Negocio.Pedido_Detalle();
            pDet.Insumo = new App_Negocio.Insumo();
            pDet.Insumo.Nombre= (dr["Nombre"].ToString());
            pDet.Insumo.Cantidad = float.Parse(dr["Cantidad"].ToString());
            pDet.Insumo.Unidad_Medida = new Unidad_Medida();
            pDet.Insumo.Unidad_Medida.Nombre = dr["Unidad"].ToString();
            pDet.Insumo.Precio= float.Parse(dr["Precio"].ToString());
            pDet.Cantidad = float.Parse(dr["Pedido"].ToString());

            gui = new InsumosPedidosGUI(pDet);
            lista.Add(gui);
        }

        return lista;
    }

    private class InsumosPedidosGUI
    {
        private string unidad;

        public string Unidad
        {
            get { return unidad; }
            set { unidad = value; }
        }
        
        private string insumo;

        public string Insumo
        {
            get { return insumo; }
            set { insumo = value; }
        }

        private double stock;

        public double Stock
        {
            get { return stock; }
            set { stock = value; }
        }

        private double pedido;

        public double Pedido
        {
            get { return pedido; }
            set { pedido = value; }
        }

        float precio;

        public float Precio
        {
            get { return precio; }
            set { precio = value; }
        }
        float maximo;

        public float Maximo
        {
            get { return maximo; }
            set { maximo = value; }
        }

        
        public InsumosPedidosGUI(App_Negocio.Pedido_Detalle fuente)
        {
            this.insumo = fuente.Insumo.Nombre;
            this.stock = fuente.Insumo.Cantidad;
            this.pedido = fuente.Cantidad;
            this.unidad = fuente.Insumo.Unidad_Medida.Nombre;
            this.precio = fuente.Insumo.Precio;
            this.maximo = float.Parse((fuente.Insumo.Precio * 1.2).ToString());
        }
    }

    protected void btnSalir_Click(object sender, EventArgs e)
    {
        Response.Redirect("Principal_Empleados.aspx");
    }

    protected void btnConfirmar_Click(object sender, EventArgs e)
    {
        List<InsumosPedidosGUI> lista = (List<InsumosPedidosGUI>)Session["dvInsumo"];
        InsumosPedidosGUI seleccionado = (InsumosPedidosGUI) Session["Seleccionado"];
        lista.Remove(seleccionado);
        Session["dvInsumo"] = lista;
        gvInsumosPedidos.DataSource = lista;
        gvInsumosPedidos.DataBind();
        txtCantidad.Text = "";
        txtInsumo.Text = "";
        txtPrecio.Text = "";
        lblUnidad.Text = "";
        lblpMaximo.Text = "";

     }
}
